from sqlalchemy import Column, Integer, String, Date, Float, ForeignKey  # 导入字段类型和外键
from .emp_database import Base  # 导入基础模型类
from sqlalchemy.orm import relationship  # 导入关系映射工具


class Emp(Base):
    """学生就业信息模型，对应数据库表student_employment_information"""
    __tablename__ = 'student_employment_information'  # 数据库表名（统一小写规范）

    # 学生编号（主键，关联学生表的主键）
    student_id = Column(
        Integer,
        ForeignKey("student_basic_information.student_id", ondelete="CASCADE"),  # 级联删除：学生删除时就业信息也删除
        primary_key=True,
        comment="学生编号"
    )
    student_name = Column(String(20), nullable=True, comment="学生姓名(冗余，可选)")  # 冗余字段，便于查询
    class_name = Column(String(20), nullable=True, comment="学生班级(冗余，可选)")  # 班级名应为字符串
    job_search_start_date = Column(Date, nullable=False, comment='就业开放时间')  # 开始求职日期
    offer_received_date = Column(Date, nullable=False, comment='offer下放时间')  # 收到offer日期
    company_name = Column(String(100), nullable=False, comment='就业公司名称')  # 公司名称
    salary = Column(Integer, nullable=False, comment='工资')  # 薪资（整数类型）

    # 与学生表建立关联（学生表模型为Stu）
    to_emp = relationship("Stu", backref="stu2emp")  # 学生对象可通过stu2emp访问就业信息